home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / fbug68k.arc / AS.C < prev    next >
C/C++ Source or Header  |  1989-08-16  |  2KB  |  85 lines

  1. #include "userdef.h"
  2.  
  3. /* **************************************************************** */
  4. /* **************************************************************** */
  5.  
  6. ascmd(argc,argv)
  7. int argc;    /* number of arguments on the command line */
  8. char *argv;    /* the command line */
  9. {
  10. extern int error;    /* global flag for error from getnum() */
  11. register int num;    /* the amount to back up or advance */
  12. register int start;    /* the address at which assembly/disassembly is done */
  13. register int size;    /* the size of the code assembled/disassembled */
  14.  
  15. if (argc != 2)
  16.     print(ERR01);
  17. else
  18.     {
  19.     striparg(argv);
  20.     start = getnum(argv,ERR02,DEFAULTSCALE);
  21.     if (error)
  22.         return(0);
  23. while (TRUE)
  24.     {
  25.     error = FALSE;
  26.     size = disasm(start);
  27.     num = getlineNR(argv);
  28.     switch(argv[0])
  29.     {
  30.         case BACKUP:
  31.             shiftarg(argv,1);
  32.             if (num == 1)
  33.             {
  34.                 num = getnum(argv,ERR02,DEFAULTSCALE);
  35.                 if (error || num == 0)
  36.                     num = 1;
  37.             }
  38.         else
  39.                 num = 1;
  40.             start = start - num;
  41.             break;
  42.         case FINISH:
  43.             return(0);
  44.         case NEXT:
  45.             shiftarg(argv,1);
  46.             if (num == 1)
  47.             {
  48.                 num = getnum(argv,ERR02,DEFAULTSCALE);
  49.                 if (error || num == 0)
  50.                     num = 1;
  51.             }
  52.             else
  53.                 num = 1;
  54.             start = start + num;
  55.             break;
  56.         case HELP:
  57.             print("\nMC%d Assembler/Disassembler",DEVICE);
  58.             print(MMASHELPMSG);
  59.             break;
  60.         default:
  61.             if (num != 0)
  62.                 {
  63.                 print("                                                                               \r");
  64.                 size = assembly(start,argv);
  65.                 }
  66.             else
  67.                 print("\n");
  68.             if (size == 0)
  69.             {
  70.                 print(ERR09);
  71.                 print(argv);
  72.                 print("\n");
  73.             }
  74.             else if(size < 0)
  75.                 size=0;
  76.             start = start + size;
  77.             break;
  78.     }
  79.     }
  80.     }
  81. }
  82.  
  83. /* **************************************************************** */
  84.  
  85.